package com.turing.post.organization.util;

import java.math.BigInteger;
import java.util.List;

import javax.ejb.Local;
import javax.ejb.Remote;

import com.turing.post.util.PCPSApplicationException;
import com.turing.post.util.PCPSWebInput;

/**
 * 凭证调拨单接口
 * 
 * @author wzd
 * @2013-03-13
 */
@Remote
@Local
public interface VoucherTransferOrderDao {

	/**
	 * 根据条件查询凭证调拨单列表--出库
	 * 
	 * @param toBranchNo
	 *            调入机构号
	 * @param status
	 *            状态
	 * @param startDate
	 *            起始时间
	 * @param endDate
	 *            终止时间
	 * @param page
	 *            页码
	 * @return 凭证入库单明细列表
	 */
	public List<VoucherTransferOrder> getVoucherTransferOrderList(
			PCPSWebInput webInput, String toBranchNo, String startDate,
			String endDate, Integer page);

	/**
	 * 根据条件查询凭证调拨单记录数--出库
	 * 
	 * @param toBranchNo
	 *            调入机构号
	 * @param status
	 *            状态
	 * @param startDate
	 *            起始时间
	 * @param endDate
	 *            终止时间
	 * @return 凭证调拨单记录数
	 */
	public Integer getVoucherTransferOrderListTotal(PCPSWebInput webInput,
			String toBranchNo, String startDate, String endDate);

	/**
	 * 新增凭证调拨单
	 * 
	 * @param VoucherTransferOrder
	 *            凭证调拨单
	 * @throws PCPSApplicationException
	 */
	public void insertVoucherTransferOrder(
			VoucherTransferOrder voucherTransferOrder)
			throws PCPSApplicationException;

	/**
	 * 修改凭证调拨单状态
	 * 
	 * @param VoucherTransferOrder
	 *            凭证调拨单
	 * @throws PCPSApplicationException
	 */
	public void updateVoucherTransferOrderByStatus(
			VoucherTransferOrder voucherTransferOrder)
			throws PCPSApplicationException;

	/**
	 * 根据id凭证调拨单对象
	 * 
	 * @param transferOrderId
	 *            凭证调拨单id
	 * @throws PCPSApplicationException
	 */
	public VoucherTransferOrder getVoucherTransferOrderByTransferOrderId(
			BigInteger transferOrderId);

	/**
	 * 根据条件查询凭证调拨单列表--接收
	 * 
	 * @param toBranchNo
	 *            调入机构号
	 * @param status
	 *            状态
	 * @param startDate
	 *            起始时间
	 * @param endDate
	 *            终止时间
	 * @param page
	 *            页码
	 * @return 凭证入库单明细列表
	 */
	public List<VoucherTransferOrder> getVoucherTransferOrderListByReceive(
			PCPSWebInput webInput, String formBranchNo, String startDate,
			String endDate, Integer page);

	/**
	 * 根据条件查询凭证调拨单记录数--接收
	 * 
	 * @param toBranchNo
	 *            调入机构号
	 * @param status
	 *            状态
	 * @param startDate
	 *            起始时间
	 * @param endDate
	 *            终止时间
	 * @return 凭证调拨单记录数
	 */
	public Integer getVoucherTransferOrderListTotalByReceive(
			PCPSWebInput webInput, String formBranchNo, String startDate,
			String endDate);

	/**
	 * 根据条件查询凭证调拨单列表--接收确认
	 * 
	 * @param toBranchNo
	 *            调入机构号
	 * @param status
	 *            状态
	 * @param startDate
	 *            起始时间
	 * @param endDate
	 *            终止时间
	 * @param page
	 *            页码
	 * @return 凭证入库单明细列表
	 */
	public List<VoucherTransferOrder> getVoucherTransferOrderListByConfirm(
			PCPSWebInput webInput, String formBranchNo, String startDate,
			String endDate, Integer page);

	/**
	 * 根据条件查询凭证调拨单记录数--接收确认
	 * 
	 * @param toBranchNo
	 *            调入机构号
	 * @param status
	 *            状态
	 * @param startDate
	 *            起始时间
	 * @param endDate
	 *            终止时间
	 * @return 凭证调拨单记录数
	 */
	public Integer getVoucherTransferOrderListTotalByConfirm(
			PCPSWebInput webInput, String formBranchNo, String startDate,
			String endDate);

	/**
	 * 根据条件查询凭证调拨单列表--调拨单查询
	 * 
	 * @param toBranchNo
	 *            调入机构号
	 * @param status
	 *            状态
	 * @param startDate
	 *            起始时间
	 * @param endDate
	 *            终止时间
	 * @param page
	 *            页码
	 * @return 凭证入库单明细列表
	 */
	public List<VoucherTransferOrder> getVoucherTransferOrderListByAll(
			PCPSWebInput webInput, String BranchNo, String status,
			String startDate, String endDate, Integer page);

	/**
	 * 根据条件查询凭证调拨单记录数--调拨单查询
	 * 
	 * @param toBranchNo
	 *            调入机构号
	 * @param status
	 *            状态
	 * @param startDate
	 *            起始时间
	 * @param endDate
	 *            终止时间
	 * @return 凭证调拨单记录数
	 */
	public Integer getVoucherTransferOrderListTotalByAll(PCPSWebInput webInput,
			String BranchNo, String status, String startDate, String endDate);
}
